# -*- encoding: utf-8 -*-
from django.conf import settings
from django.db import models
from django.template.defaultfilters import slugify

from datetime import datetime

from utils import stdimg

class Categorie(models.Model):
    "Une catégorie de billet"

    name = models.CharField(u'nom', max_length=250)
    slug = models.SlugField(u'slug', unique=True) # On l'utilise dans l'URL, il doit donc être unique

    def __unicode__(self):
        return self.name

    def get_absolute_url(self):
        return u'/categorie/%s/' % self.slug

class Billet(models.Model):
    "Un billet du blog"
    
    logo = models.ImageField(u'illustration', upload_to='blog/illustration/')
    title = models.CharField(u'titre', max_length=50)
    slug = models.SlugField(u'slug', blank=True)
    content = models.TextField(u'contenu')
    
    created_at = models.DateTimeField(editable=False, auto_now_add=True) # Cette date se remplie automatiquement à la création
    updated_at = models.DateTimeField(editable=False, auto_now=True) # Cette date se remplie automatiquement lorsqu'on édite le billet

    published_at = models.DateTimeField(u'date de publication', blank=True) # Cette date est la date de publication sur le blog

    is_draft = models.BooleanField(u'brouillon', default=True)

    categories = models.ManyToManyField(Categorie, related_name='billets')

    def save(self):
        # On génére le slug automatiquement à partir du titre
        if not self.slug:
            self.slug = slugify(self.title)

        # Si ce n'est plus un brouillon et que la date de publication
        # n'a pas été saisie, on publie avec la date actuelle.
        if not self.published_at and not self.is_draft:
            self.published_at = datetime.now()

        super(Billet, self).save()
        stdimg(self, ('logo', (48, 48))) # On fait de l'image un logo 48x48 avec un nom unique
        super(Billet, self).save() # On mets à jour les informations sur l'image dans la BDD

    def __unicode__(self):
        return u'%s' % self.title

    def get_absolute_url(self):
        return u'/billet/%s/%s/' % (self.id, self.slug)
